#ifndef SCENEUNDOSTACK_H
#define SCENEUNDOSTACK_H
#include <QString>
#include <QList>

// да и фиг с ним!..
typedef QString UndoData;

/**
 * @class SceneUndoStack
 * Хранит состояния сцены, представленные в виде XML-строк.
 * Грубо, зато быстро
 *
 * @see CustomGraphicsScene
 * @see CustomGraphicsScene::stateChangedByUser()
 */
class SceneUndoStack
{
public:
	SceneUndoStack();
	bool canUndo();							///< Можно отменить?
	bool canRedo();							///< Можно повторить?
	UndoData undo();						///< Отменить (перейти к предыдущему состоянию)
	UndoData redo();						///< Повторить (перейти к следующему состоянию)
	UndoData currentState();				///< Вернуть текущее состояние
	void clear();							///< Очистить стек
	void addState (const UndoData &data);	///< Добавить новое состояние
private:
	QList<UndoData> stack;
	int index;
};

#endif // SCENEUNDOSTACK_H
